Unity: Textures & Materials — How to Make a Game (Beginners)

This quick guide covers what textures and materials are, how they work with shaders, and how to wire them up in Unity (URP/Standard). Keep it open while you build.

1) Core Ideas

2) Essential PBR Texture Maps

MapWhat it StoresImport Tips
Base Map / AlbedoBase color of the surfaceUse sRGB (Color Texture) = ON
Normal MapSmall bump details for lightingMark as Normal map; sRGB = OFF
Metallic (Smoothness)Metalness (R), Smoothness (A)Data map; sRGB = OFF
RoughnessOpposite of SmoothnessOften invert to Smoothness: Smoothness = 1 − Roughness
Ambient Occlusion (AO)Crevice darkening multiplierData map; sRGB = OFF
Height/ParallaxHeight for parallax effectsOptional; more expensive
EmissionSelf-glow colorsRGB = ON; enable Emission

3) Importing Textures (Settings That Matter)

  1. Drag textures into the Project window.
  2. Select a texture and set:

4) Make a Material & Wire Textures (URP Lit Example)

  1. Create → Material (e.g., Mat_BrickWall).
  2. Inspector → Shader: Universal Render Pipeline/Lit.
  3. Assign maps:
  4. Tiling & Offset: Adjust to fit large surfaces (e.g., 2×2 or 3×3).
  5. Apply: Drag the material onto a mesh in the Scene view or set it in the Mesh Renderer.

5) 5‑Minute Mini Tutorial

  1. Create a Plane (floor) and a Cube: GameObject → 3D Object.
  2. Import floor textures (albedo, normal, roughness, AO).
  3. Create Mat_Floor (URP Lit) and assign maps as above.
  4. Set Tiling to repeat nicely (e.g., 3×3).
  5. Ensure a Directional Light exists and shadows are enabled.
  6. (URP) Add a Global Volume with Bloom if you use Emission.

6) Materials, Shaders, and Pipelines

7) UVs, Tiling, and Seams

8) Transparency & Cutouts

9) Performance Tips

10) Common Pitfalls & Fixes

11) Tiny Script: Tweak a Material at Runtime (URP)

using UnityEngine;

public class MaterialTweaker : MonoBehaviour
{
    public Renderer targetRenderer; // assign in Inspector
    public Texture2D newAlbedo;
    public Color tint = Color.white;

    void Start()
    {
        var block = new MaterialPropertyBlock();
        targetRenderer.GetPropertyBlock(block);

        block.SetColor("_BaseColor", tint);      // URP Lit color
        block.SetTexture("_BaseMap", newAlbedo); // URP Lit albedo slot
        block.SetFloat("_Metallic", 0.7f);
        block.SetFloat("_Smoothness", 0.6f);

        targetRenderer.SetPropertyBlock(block);
    }
}

For Built‑in/Standard shader, use property names like _Color, _MainTex, _Metallic, _Glossiness.

12) Student Checklist